using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using DTO;
using System.Collections;

namespace DAO
{
    public class NhanVienDAO
    {
        #region DanhSach
        public IList DanhSach()
        {
            SqlConnection connect = SqlDataAccessHelper.ConnectSQL();
            SqlCommand command = connect.CreateCommand();
            command.CommandText = "SELECT * FROM NHANVIEN";
            SqlDataReader dr = command.ExecuteReader();
            IList list = new ArrayList();
            while(dr.Read())
            {
                NhanVienDTO nhanvien = new NhanVienDTO();
                nhanvien.MaNhanVien = (int)dr["MaNhanVien"];
                nhanvien.LoaiNhanVien = (int)dr["LoaiNhanVien"];
                nhanvien.TenNhanVien = (string)dr["TenNhanVien"];
                nhanvien.NamKinhNghiem = (int)dr["NamKinhNghiem"];
                list.Add(nhanvien);
            }
            dr.Close();
            connect.Close();
            NhanVienDTO[] listNhanVien = new NhanVienDTO[list.Count];
            list.CopyTo(listNhanVien, 0);
            return listNhanVien;
        }
        #endregion
        #region Retrieving
        public static List<NhanVienDTO> SelectNhanVienAll()
        {
            List<NhanVienDTO> list = new List<NhanVienDTO>();
            try
            {
                DataTable dt = SqlDataAccessHelper.ExecuteQuery("spSelectNhanVienAll");
                foreach(DataRow dr in dt.Rows)
                {
                    NhanVienDTO nhanvien = new NhanVienDTO();
                    nhanvien.MaNhanVien = int.Parse(dr["MaNhanVien"].ToString());
                    nhanvien.TenNhanVien = dr["TenNhanVien"].ToString();
                    nhanvien.LoaiNhanVien = int.Parse(dr["LoaiNhanVien"].ToString());
                    nhanvien.NamKinhNghiem = int.Parse(dr["NamKinhNghiem"].ToString());
                    list.Add(nhanvien);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return list;
        }

        public static NhanVienDTO SelectNhanVienByMa(int MaNhanVien)
        {
            NhanVienDTO nhanvien = new NhanVienDTO();
            try
            {
                //create List Sql Parameter
                List<SqlParameter> sqlParams = new List<SqlParameter>();
                sqlParams.Add(new SqlParameter("@MaNhanVien", MaNhanVien));
                DataTable dt = SqlDataAccessHelper.ExecuteQuery("spSelectNhanVienByMa", sqlParams);
                DataRow dr = dt.Rows[0];
                nhanvien.MaNhanVien = int.Parse(dr["MaNhanVien"].ToString());
                nhanvien.TenNhanVien = dr["TenNhanVien"].ToString();
                nhanvien.LoaiNhanVien = int.Parse(dr["LoaiNhanVien"].ToString());
                nhanvien.NamKinhNghiem = int.Parse(dr["NamKinhNghiem"].ToString());
            }
            catch (System.Exception ex)
            {
            	throw ex;
            }
            return nhanvien;
        }

        public static bool CheckNhanVienByMa(int MaNhanVien)
        {
            bool result = false;
            try
            {
                //Create List Sql Parameter
                List<SqlParameter> sqlParams = new List<SqlParameter>();
                sqlParams.Add(new SqlParameter("@MaNhanVien", MaNhanVien));

                DataTable dt = SqlDataAccessHelper.ExecuteQuery("spSelectNhanVienByMa", sqlParams);
                if (dt.Rows.Count == 1)
                {
                    result = true;
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            return result;
        }
        #endregion
    }
}
